                ;------------------
                ;Rombo Productions VIDI digitizer
                ;disassembled May 2010 by nocash
                ;------------------
                ;Port F8B0h CRTC Index
                ;Port F8B1h CRTC Data
                ;Port F9B0h Config (W) and Capture Data (R)
                ;NMI - triggered on SYNC (on VSYNC, and maybe also on HSYNC?)
                ;---
                ;Config bits
                ; 0 Reset Brightness/Contrast to zero (0=No, 1=Reset)
                ; 1 Increment Contrast   (0=No, 1=Add +1)
                ; 2 Increment Brightness (0=No, 1=Add +1)
                ; 3 Enable NMI on Sync   (0=No, 1=Yes)
                ; 4-6 Transfer mode
                ;      0=Stop Transfer
                ;      1=Transfer SRAM to CPC
                ;      3=Capture 320x200x4 to SRAM
                ;      7=Capture 640x200x1 to SRAM
                ; 7 Not used by VIDI software (set to 0)
                ;note: additionally to above I/O controlled brightness/contrast,
                ;the hardware additionally has (externally accessible)
                ;brightness/contrast potentiometers for coarse adjustments,
                ;also the pots are REQUIRED for mode0 scans (where the
                ;brightness I/O ports are increasing from 0=min to 15=max
                ;during the 16-pass scan)
                ;---
                ;CRTC registers:
9CC9 75         ;crtc[00h] 75h or 50h ;horizontal total (-1)
9CC8 50         ;crtc[01h] 50h        ;horizontal displayed
9CC7 5B         ;crtc[02h] 5Bh or ..  ;horizontal sync pos
9CC6 11         ;crtc[03h] 11h        ;horizontal sync width
9CC5 26         ;crtc[04h] 26h        ;vertical total (-1)
9CC4 00         ;crtc[05h] 0          ;vertical total adjust
9CC3 19         ;crtc[06h] 19h        ;vertical displayed
9CC2 00         ;crtc[07h] 0          ;vertical sync pos
9CC1 00         ;crtc[08h] 0          ;interlace mode
9CC0 07         ;crtc[09h] 07h        ;max scanline (-1)
9CBF 00         ;crtc[0Ah] 0          ;cursor start
9CBE 00         ;crtc[0Bh] 0          ;cursor end
9CBD 00         ;crtc[0Ch] 0          ;start addr high
9CBC 00         ;crtc[0Dh] 0          ;start addr low
9CBB 00         ;crtc[0Eh] 0          ;cursor high
9CBA 00         ;crtc[0Fh] 0          ;cursor low
                ;crtc[10h] N/A        ;lightpen high
                ;crtc[11h] N/A        ;lightpen low
                ;------------------
                ; iy = A048h = var pool
                ;---
A048             db 07h  ;[iy+00h] brightness   (0..15)  (default=7)
A049             db 07h  ;[iy+01h] contrast     (0..15)  (default=7)
A04A             db   h  ;[iy+02h] video mode   (0,1,2)  (default=1)
A04B             db   h  ;[iy+03h] picture xpos (0..31)  (default=16)
A04C             db   h  ;[iy+04h] picture ypos (0..127) (default=48)
A04D             db   h  ;[iy+05h] picture yextra        (0)
A04E             db   h  ;[iy+06h] xlat'ed video mode    (30h or 70h)
A04F             db   h  ;[iy+07h] vram addr msb         (C0h for addr C000h)
A050             db   h  ;[iy+08h] xlat'ed video mode with nmi on  (38h or 78h)
A051             db   h  ;[iy+09h] xlat'ed video mode with nmi off (30h or 70h)
A05              db   h  ;[iy+0 h]
A05              db   h  ;[iy+0 h]
                ;------------------
8000 0E 07       ld   c,07
8002 11 40 00    ld   de,0040
8005 21 FF B0    ld   hl,B0FF
8008 CD CE BC    call BCCE  ;kl_init_back
800B 06 08       ld   b,08
800D 21 78 A0    ld   hl,A078
8010 11 00 38    ld   de,3800
8013 CD 77 BC    call BC77  ;cas_in_open
8016 D2 00 00    jp   nc,0000  ;reset
8019 EB          ex   de,hl
801A CD 83 BC    call BC83  ;cas_in_direct
801D D2 00 00    jp   nc,0000  ;reset
8020 CD 7A BC    call BC7A  ;cas_in_close
8023 D2 00 00    jp   nc,0000  ;reset
8026 FD 21 48 A0 ld   iy,A048
802A CD 7C 99    call init_vidi_crtc
802D CD 91 99    call set_brightness_contrast
8030 CD 09 B9    call B909  ;kl_l_rom_disable
8033 F5          push af
8034 FD 36 05 00 ld   [iy+05],00h ;picture yextra
8038 3E C0       ld   a,0C000h/100h ;vram addr msb
803A FD 77 07    ld   [iy+07],a ;vram addr msb
803D CD 08 BC    call BC08  ;scr_set_base
8040 21 00 C0    ld   hl,C000
8043 4D          ld   c,l
8044 11 C8 50    ld   de,50C8
8047 CD 47 BC    call BC47  ;scr_flood_box
804A 21 00 00    ld   hl,0000
804D CD 05 BC    call BC05  ;scr_set_offset
8050 FD CB 0E 86 res  0,[iy+0E]
8054 FD 36 27 00 ld   [iy+27],00
8058 FD E5       push iy
805A E1          pop  hl
805B 11 7A 00    ld   de,007A
805E 19          add  hl,de
805F CD D4 BC    call BCD4  ;kl_find_command
8062 30 15       jr   nc,8079
8064 FD CB 0E C6 set  0,[iy+0E]
8068 3E FF       ld   a,FF
806A CD 1B 00    call 001B  ;kl_far_pchl
806D F5          push af
806E 3A 8C BC    ld   a,[BC8C]
8071 FE CF       cmp  a,CF
8073 28 04       jr   z,8079
8075 FD 36 27 01 ld   [iy+27],01
8079 3A D3 BD    ld   a,[BDD3]
807C FD 77 21    ld   [iy+21],a
807F 3E C9       ld   a,C9
8081 32 D3 BD    ld   [BDD3],a
8084 CD 42 BB    call BB42  ;km_get_delay
8087 E5          push hl
8088 21 01 16    ld   hl,1601
808B CD 3F BB    call BB3F  ;km_set_delay
808E 3E 4C       ld   a,4C
8090 CD 2A BB    call BB2A  ;km_get_translate
8093 47          ld   b,a
8094 3E 4D       ld   a,4D
8096 CD 2A BB    call BB2A  ;km_get_translate
8099 4F          ld   c,a
809A C5          push bc
809B 3E 4C       ld   a,4C
809D 06 0D       ld   b,0D
809F CD 27 BB    call BB27  ;km_set_translate
80A2 3E 4D       ld   a,4D
80A4 06 0D       ld   b,0D
80A6 CD 27 BB    call BB27  ;km_set_translate
80A9 3E 10       ld   a,10
80AB 3D          dec  a
80AC F5          push af
80AD CD 35 BC    call BC35  ;scr_get_ink
80B0 F1          pop  af
80B1 C5          push bc
80B2 A7          and  a,a
80B3 20 F6       jr   nz,80AB
80B5 CD 3B BC    call BC3B  ;scr_get_border
80B8 C5          push bc
80B9 CD 11 BC    call BC11  ;scr_get_mode
80BC F5          push af
80BD CD 0B BC    call BC0B  ;scr_get_location
80C0 F5          push af
80C1 FD 77 07    ld   [iy+07],a  ;=C0h for vram at C000h ;vram addr msb
80C4 CD 95 82    call 8295
80C7 CD 23 99    call 9923
80CA CD 65 97    call 9765
80CD CD 5F 97    call 975F
80D0 CD C0 9B    call set_nmi_vector
80D3 F3          di
80D4 CD B2 99    call start_stop_scanning
80D7 FB          ei
80D8 FD CB 0E 4E bit  1,[iy+0E]
80DC 20 2F       jr   nz,810D
80DE FD 7E 07    ld   a,[iy+07] ;vram addr msb
80E1 EE 80       xor  a,80
80E3 FD 77 07    ld   [iy+07],a ;vram addr msb
80E6 CD F0 99    call scan_192_line_frame
80E9 CD 53 9B    call 9B53
80EC FD 7E 07    ld   a,[iy+07] ;vram addr msb
80EF CD 08 BC    call BC08  ;scr_set_base
80F2 CD 19 BD    call BD19  ;mc_wait_flyback
80F5 FD 7E 07    ld   a,[iy+07] ;vram addr msb
80F8 EE 80       xor  a,80
80FA FD 77 07    ld   [iy+07],a ;vram addr msb
80FD CD 30 9B    call 9B30
8100 FD 7E 07    ld   a,[iy+07] ;vram addr msb
8103 EE 80       xor  a,80
8105 FD 77 07    ld   [iy+07],a ;vram addr msb
8108 CD 19 9A    call scan_last_8_lines
810B 18 06       jr   8113

810D CD F0 99    call scan_192_line_frame
8110 CD 19 9A    call scan_last_8_lines
8113 FB          ei
8114 CD 13 98    call 9813
8117 79          ld   a,c
8118 A7          and  a,a
8119 CA B7 81    jp   z,81B7
811C CB 51       bit  2,c
811E C2 4B 82    jp   nz,824B
8121 CB 59       bit  3,c
8123 C2 51 82    jp   nz,8251
8126 CB 71       bit  6,c
8128 C2 57 82    jp   nz,8257
812B CB 79       bit  7,c
812D C2 3F 82    jp   nz,823F
8130 4F          ld   c,a
8131 FD 7E 24    ld   a,[iy+24]
8134 FE 02       cmp  a,02
8136 DA 3A 82    jp   c,823A
8139 CA E1 82    jp   z,82E1
813C FE 04       cmp  a,04
813E DA BE 81    jp   c,81BE
8141 CA 80 81    jp   z,8180
8144 FE 06       cmp  a,06
8146 CA 03 82    jp   z,8203
8149 79          ld   a,c
814A E6 23       and  a,23
814C CA D3 80    jp   z,80D3
814F CB 69       bit  5,c
8151 20 29       jr   nz,817C
8153 E6 01       and  a,01
8155 FD 7E 00    ld   a,[iy+00] ;brightness
8158 28 03       jr   z,815D
815A 3C          inc  a
815B 18 01       jr   815E
815D 3D          dec  a
815E CB 67       bit  4,a
8160 C2 D3 80    jp   nz,80D3
8163 FD 77 00    ld   [iy+00],a ;brightness
8166 11 B8 07    ld   de,07B8
8169 CD 19 BD    call BD19  ;mc_wait_flyback
816C CD 11 99    call x9911 ;display_decimal_a
816F 2E 38       ld   l,38
8171 06 04       ld   b,04
8173 CD 30 99    call 9930
8176 CD 91 99    call set_brightness_contrast
8179 C3 D3 80    jp   80D3
817C 3E 07       ld   a,07
817E 18 E3       jr   8163
8180 79          ld   a,c
8181 E6 23       and  a,23
8183 CA D3 80    jp   z,80D3
8186 CB 69       bit  5,c
8188 20 29       jr   nz,81B3
818A E6 01       and  a,01
818C FD 7E 03    ld   a,[iy+03] ;picture xpos
818F 28 03       jr   z,8194
8191 3C          inc  a
8192 18 01       jr   8195
                @@
8194 3D          dec  a
8195 CB 6F       bit  5,a
                @@
8197 C2 D3 80    jp   nz,80D3
819A CD FF 95    call set_picture_xpos_a  ;in: A
819D FD 7E 03    ld   a,[iy+03] ;picture xpos
81A0 11 A6 07    ld   de,07A6
81A3 CD 19 BD    call BD19  ;mc_wait_flyback
81A6 CD 11 99    call x9911 ;display_decimal_a
81A9 2E 26       ld   l,26
81AB 06 04       ld   b,04
81AD CD 30 99    call 9930
81B0 C3 D3 80    jp   80D3
81B3 3E 10       ld   a,10
81B5 18 E3       jr   819A
81B7 FD 36 22 08 ld   [iy+22],08
81BB C3 D3 80    jp   80D3
81BE 79          ld   a,c
81BF E6 23       and  a,23
81C1 CA D3 80    jp   z,80D3
81C4 CB 69       bit  5,c
81C6 28 04       jr   z,81CC
81C8 3E 30       ld   a,30
81CA 18 21       jr   81ED
81CC FD 7E 04    ld   a,[iy+04] ;picture ypos
81CF FD 35 22    dec  [iy+22]
81D2 28 09       jr   z,81DD
81D4 3C          inc  a
81D5 CB 41       bit  0,c
81D7 20 0F       jr   nz,81E8
81D9 3D          dec  a
81DA 3D          dec  a
81DB 18 0B       jr   81E8
81DD FD 34 22    inc  [iy+22]
81E0 C6 04       add  a,04
81E2 CB 41       bit  0,c
81E4 20 02       jr   nz,81E8
81E6 D6 08       sub  a,08
81E8 CB 7F       bit  7,a
81EA C2 B7 81    jp   nz,81B7
81ED FD 77 04    ld   [iy+04],a ;picture ypos
81F0 11 98 07    ld   de,0798
81F3 CD 19 BD    call BD19  ;mc_wait_flyback
81F6 CD FB 98    call 98FB
81F9 2E 18       ld   l,18
81FB 06 06       ld   b,06
81FD CD 30 99    call 9930
8200 C3 D3 80    jp   80D3
8203 79          ld   a,c
8204 E6 23       and  a,23
8206 CA D3 80    jp   z,80D3
8209 CB 69       bit  5,c
820B 20 29       jr   nz,8236
820D E6 01       and  a,01
820F FD 7E 01    ld   a,[iy+01]
8212 28 03       jr   z,8217
8214 3C          inc  a
8215 18 01       jr   8218
8217 3D          dec  a
8218 CB 67       bit  4,a
821A C2 D3 80    jp   nz,80D3
821D FD 77 01    ld   [iy+01],a
8220 11 CA 07    ld   de,07CA
8223 CD 19 BD    call BD19  ;mc_wait_flyback
8226 CD 11 99    call x9911 ;display_decimal_a
8229 2E 4A       ld   l,4A
822B 06 04       ld   b,04
822D CD 30 99    call 9930
8230 CD 91 99    call set_brightness_contrast
8233 C3 D3 80    jp   80D3
8236 3E 07       ld   a,07
8238 18 E3       jr   821D
823A CB 61       bit  4,c
823C CA D3 80    jp   z,80D3
823F 21 88 9D    ld   hl,9D88
8242 CD 74 98    call 9874
8245 DA 00 00    jp   c,0000  ;reset
8248 C3 C4 80    jp   80C4
824B CD B2 97    call 97B2
824E C3 D3 80    jp   80D3
8251 CD DF 97    call 97DF
8254 C3 D3 80    jp   80D3

8257 CD 30 9B    call 9B30
825A F3          di
825B CD B2 99    call start_stop_scanning
825E FB          ei
825F FD CB 0E 4E bit  1,[iy+0E]
8263 20 1C       jr   nz,8281
8265 FD 7E 07    ld   a,[iy+07] ;vram addr msb
8268 EE 80       xor  a,80
826A FD 77 07    ld   [iy+07],a ;vram addr msb
826D CD F0 99    call scan_192_line_frame
8270 CD 19 9A    call scan_last_8_lines
8273 CD 30 9B    call 9B30
8276 FD 7E 07    ld   a,[iy+07] ;vram addr msb
8279 CD 08 BC    call BC08  ;scr_set_base
827C CD 19 BD    call BD19  ;mc_wait_flyback
827F 18 09       jr   828A

8281 CD F0 99    call scan_192_line_frame
8284 CD 19 9A    call scan_last_8_lines
8287 CD 30 9B    call 9B30

828A CD 13 98    call 9813
828D 79          ld   a,c
828E E6 90       and  a,90
8290 28 C8       jr   z,825A
8292 C3 C4 80    jp   80C4
8295 FD 7E 02    ld   a,[iy+02]  ;video mode
8298 F5          push af
8299 A7          and  a,a
829A 20 01       jr   nz,829D
829C 3C          inc  a
829D CD DB 95    call 95DB
82A0 FD 7E 02    ld   a,[iy+02]  ;video mode
82A3 CD 1C BD    call BD1C  ;mc_set_mode
82A6 CD 5A 9C    call 9C5A ;set_inks_and_border
82A9 F1          pop  af
82AA FD 77 02    ld   [iy+02],a  ;video mode
82AD 21 6F 9F    ld   hl,9F6F
82B0 CD C2 98    call 98C2
82B3 FD 36 24 02 ld   [iy+24],02
82B7 FD 36 25 03 ld   [iy+25],03
82BB DD 23       inc  ix
82BD FD 7E 04    ld   a,[iy+04] ;picture ypos
82C0 11 98 07    ld   de,0798
82C3 CD FB 98    call 98FB
82C6 FD 7E 03    ld   a,[iy+03] ;picture xpos
82C9 11 A6 07    ld   de,07A6
82CC CD 11 99    call x9911 ;display_decimal_a
82CF FD 7E 00    ld   a,[iy+00] ;brightness
82D2 11 B8 07    ld   de,07B8
82D5 CD 11 99    call x9911 ;display_decimal_a
82D8 FD 7E 01    ld   a,[iy+01]
82DB 11 CA 07    ld   de,07CA
82DE C3 11 99    jp   x9911 ;display_decimal_a

82E1 CB 61       bit  4,c
82E3 CA D3 80    jp   z,80D3
82E6 CD E0 9B    call restore_nmi_vector
82E9 21 05 16    ld   hl,1605
82EC CD 3F BB    call BB3F  ;km_set_delay
82EF FD 7E 02    ld   a,[iy+02]  ;video mode
82F2 A7          and  a,a
82F3 20 23       jr   nz,8318
82F5 CD DB 95    call 95DB
82F8 AF          xor  a,a
82F9 CD 1C BD    call BD1C  ;mc_set_mode
82FC CD 5A 9C    call 9C5A ;set_inks_and_border
82FF CD 19 BD    call BD19  ;mc_wait_flyback
8302 CD 19 BD    call BD19  ;mc_wait_flyback
8305 CD 09 B9    call B909  ;kl_l_rom_disable
8308 F5          push af
8309 F3          di
830A CD C0 9B    call set_nmi_vector
830D 21 15 83    ld   hl,8315   ;\
8310 E3          ex   [sp],hl   ; some complex retadr modification...
8311 E5          push hl        ;/
8312 C3 D7 94    jp   mode_0_multipass_scan

8315 CD 21 96    call 9621
                @@
8318 21 9A 9F    ld   hl,9F9A
831B CD C2 98    call 98C2
831E FD 36 24 02 ld   [iy+24],02
8322 FD 36 25 03 ld   [iy+25],03
8326 DD 23       inc  ix
8328 CD 23 99    call 9923
832B CD 65 97    call 9765
832E CD 5F 97    call 975F
8331 CD 82 97    call 9782
8334 CB 61       bit  4,c
8336 28 F9       jr   z,8331
8338 FE 02       cmp  a,02
833A DA 5C 83    jp   c,835C
833D CA 32 8B    jp   z,8B32
8340 FE 04       cmp  a,04
8342 DA 84 8C    jp   c,8C84
8345 CA 65 83    jp   z,8365
8348 FE 06       cmp  a,06
834A DA B4 87    jp   c,87B4
834D CA A5 88    jp   z,88A5
8350 FD CB 0E 4E bit  1,[iy+0E]
8354 20 DB       jr   nz,8331
8356 CD 74 9B    call 9B74
8359 C3 31 83    jp   8331

835C 21 01 16    ld   hl,1601
835F CD 3F BB    call BB3F  ;km_set_delay
8362 C3 C4 80    jp   80C4
8365 21 C6 9F    ld   hl,9FC6
8368 CD C2 98    call 98C2
836B CD 23 99    call 9923
836E CD 7B 87    call 877B
8371 CD 92 87    call 8792
8374 CD 65 97    call 9765
8377 CD 5F 97    call 975F
837A CD 82 97    call 9782
837D FE 06       cmp  a,06
837F CA A0 83    jp   z,83A0
8382 D2 C4 83    jp   nc,83C4
8385 CB 61       bit  4,c
8387 28 F1       jr   z,837A
8389 FE 02       cmp  a,02
838B DA 18 83    jp   c,8318
838E CA 32 8B    jp   z,8B32
8391 FE 04       cmp  a,04
8393 DA 13 84    jp   c,8413
8396 CA A9 85    jp   z,85A9
8399 FE 05       cmp  a,05
839B CA 30 86    jp   z,8630
839E 18 DA       jr   837A
83A0 79          ld   a,c
83A1 E6 23       and  a,23
83A3 28 D5       jr   z,837A
83A5 CB 69       bit  5,c
83A7 28 14       jr   z,83BD
83A9 AF          xor  a,a
83AA FD 77 26    ld   [iy+26],a
83AD CD 19 BD    call BD19  ;mc_wait_flyback
83B0 CD 7B 87    call 877B
83B3 2E 3A       ld   l,3A
83B5 06 06       ld   b,06
83B7 CD 30 99    call 9930
83BA C3 7A 83    jp   837A
83BD FD 7E 26    ld   a,[iy+26]
83C0 EE 01       xor  a,01
83C2 18 E6       jr   83AA
83C4 79          ld   a,c
83C5 E6 23       and  a,23
83C7 CA 7A 83    jp   z,837A
83CA FD CB 0E 46 bit  0,[iy+0E]
83CE CA 7A 83    jp   z,837A
83D1 CB 69       bit  5,c
83D3 28 07       jr   z,83DC
83D5 FD 7E 0E    ld   a,[iy+0E]
83D8 E6 01       and  a,01
83DA 18 0C       jr   83E8
83DC FD 7E 27    ld   a,[iy+27]
83DF CB 41       bit  0,c
83E1 28 26       jr   z,8409
83E3 3C          inc  a
83E4 FE 03       cmp  a,03
83E6 28 1E       jr   z,8406
83E8 FD 77 27    ld   [iy+27],a
83EB CD 19 BD    call BD19  ;mc_wait_flyback
83EE CD 92 87    call 8792
83F1 2E 44       ld   l,44
83F3 06 0A       ld   b,0A
83F5 FD 7E 27    ld   a,[iy+27]
83F8 A7          and  a,a
83F9 28 06       jr   z,8401
83FB CD 30 99    call 9930
83FE C3 7A 83    jp   837A
                ;------------------
                ....
                ;------------------
                mode_0_multipass_scan:
94D7 FD E5       push iy  ;\ hl=iy      ;\
94D9 E1          pop  hl  ;/            ;
94DA 11 A8 00    ld   de,00A8           ; relocate 956F to iy+A8h
94DD 19          add  hl,de             ;
94DE EB          ex   de,hl             ;
94DF 21 6F 95    ld   hl,956F           ;
94E2 01 6C 00    ld   bc,006C           ;
94E5 ED B0       ldir                   ;/
94E7 FD 66 07    ld   h,[iy+07] ;vram addr msb
94EA 2E 00       ld   l,00
94EC 54          ld   d,h
94ED 1E 01       ld   e,01
94EF 01 FF 3F    ld   bc,3FFF
94F2 71          ld   [hl],c  ;=FFh
94F3 ED B0       ldir
94F5 FD 7E 00    ld   a,[iy+00] ;brightness
94F8 F5          push af
94F9 06 10       ld   b,10h             ;\
94FB F3          di                     ; loop 16 passes...
                @@sixteen_pass_lop:     ;/
94FC 05          dec  b                 ;-decrease pass number (15..0)
94FD 3E 0F       ld   a,0F              ;\
94FF 90          sub  a,b               ;
9500 5F          ld   e,a               ;
9501 7B          ld   a,e               ;
9502 0F          rora                   ;
9503 E6 80       and  a,80              ;
9505 4F          ld   c,a               ; translate pass number
9506 7B          ld   a,e               ; to CPC VRAM Mode 0 color value
9507 07          rola                   ;
9508 07          rola                   ;
9509 E6 08       and  a,08              ;
950B B1          or   a,c               ;
950C 4F          ld   c,a               ;
950D 7B          ld   a,e               ;
950E 07          rola                   ;
950F 07          rola                   ;
9510 07          rola                   ;
9511 E6 20       and  a,20              ;
9513 B1          or   a,c               ;
9514 4F          ld   c,a               ;
9515 7B          ld   a,e               ;
9516 0F          rora                   ;
9517 0F          rora                   ;
9518 E6 02       and  a,02              ;
951A B1          or   a,c               ;
951B 4F          ld   c,a               ;/
951C 78          ld   a,b                       ;\brightness = pass (15..0)
951D FD 77 00    ld   [iy+00],a ;brightness     ;/
9520 C5          push bc
9521 CD 91 99    call set_brightness_contrast
9524 CD B2 99    call start_stop_scanning       ;---> scan one "mode 2" frame
9527 11 50 00    ld   de,0050h                  ;\
952A 01 B0 F8    ld   bc,F8B0                   ;
952D ED 51       out  [bc],d    ;[F8B0h]=00h    ;
952F 01 B1 F8    ld   bc,F8B1                   ;
9532 ED 59       out  [bc],e    ;[F8B1h]=50h    ;/
9534 01 B0 F9    ld   bc,F9B0                   ;\
9537 3E 10       ld   a,10h                     ;
9539 ED 79       out  [bc],a    ;[F9B0h]=10h    ;/
953B C1          pop  bc
953C CD 67 95    call 9567                      ;---> merge to "mode 0" frame
953F C5          push bc
9540 01 B0 F9    ld   bc,F9B0                   ;\
9543 3E 00       ld   a,00h                     ;
9545 ED 79       out  [bc],a    ;[F9B0h]=00h    ;/
9547 11 75 00    ld   de,0075h                  ;\
954A 01 B0 F8    ld   bc,F8B0                   ;
954D ED 51       out  [bc],d    ;[F8B0h]=00h    ;
954F 01 B1 F8    ld   bc,F8B1                   ;
9552 ED 59       out  [bc],e    ;[F8B1h]=75h    ;/
9554 C1          pop  bc                        ;\
9555 04          inc  b                         ; loop next pass (16 passes)
9556 10 A4       djnz @@sixteen_pass_lop        ;/
9558 CD E0 9B    call restore_nmi_vector
955B FB          ei
955C F1          pop  af
955D FD 77 00    ld   [iy+00],a ;brightness
9560 CD 91 99    call set_brightness_contrast
9563 F1          pop  af
9564 C3 0C B9    jp   B90C  ;kl_rom_restore
                ;---

9567 FD E5       push iy                ;\
9569 E1          pop  hl                ; relocated 956F at iy+A8h
956A 11 A8 00    ld   de,00A8           ;
956D 19          add  hl,de             ;
956E E9          jp   hl                ;/
                ;---
                 ;below is relocated to iy+A8h...
                 ;technically same as "scan_192_line_frame",
                 ;but merges 16 multipass mode 2 scans to a mode 0 images
                 ;(replaces color 15 by capture data)
                 ;---
956F CD 03 B9    call B903  ;kl_u_rom_disable
                 ;above disables upper ROM, allowing to read VRAM at C000h,
                 ;intended for the ROM-version of the VIDI software,
                 ;for the (disassembled) DSK-version it isn't required
9572 F3          di
9573 F5          push af
9574 C5          push bc
9575 FD 56 07    ld   d,[iy+07] ;vram addr msb
9578 1E 00       ld   e,00      ;vram addr lsb
957A D5          push de ;\set IX=DE (vram dest addr)
957B DD E1       pop  ix ;/
957D C5          push bc ;\set L=C (mode 0 vram color value of current pass)
957E E1          pop  hl ;/
957F 01 B0 F9    ld   bc,F9B0
9582 11 C8 50    ld   de,50C8
                @@ylop:
9585 D5          push de
9586 DD E5       push ix
                @@xlop:
9588 ED 60       in   h,[bc]    ;h=[F9B0h]      ;-capture byte
958A DD 7E 00    ld   a,[ix+00]                 ;\
958D F6 55       or   a,55h     ;one mode0 pix  ;
958F 3C          inc  a                         ;
9590 20 0F       jr   nz,@@keep1                ; if mode0 pixel has color 15,
9592 7C          ld   a,h                       ; and at least one of the
9593 F6 0F       or   a,0Fh     ;four mode2 pix ; new four mode2 pixels is
9595 3C          inc  a                         ; black, then change set
9596 28 09       jr   z,@@keep1                 ; mode0 pixel to current
9598 7D          ld   a,l                       ; brightness
9599 F6 55       or   a,55h                     ;
959B DD A6 00    and  a,[ix+00]                 ;
959E DD 77 00    ld   [ix+00],a                 ;
                @@keep1:                        ;/
95A1 DD 7E 00    ld   a,[ix+00]                 ;\
95A4 F6 AA       or   a,AAh     ;one mode0 pix  ;
95A6 3C          inc  a                         ;
95A7 20 10       jr   nz,@@keep2                ; same as above for the
95A9 7C          ld   a,h                       ; other half of the VRAM byte
95AA F6 F0       or   a,F0h     ;four mode2 pix ;
95AC 3C          inc  a                         ;
95AD 28 0A       jr   z,@@keep2                 ;
95AF 7D          ld   a,l                       ;
95B0 0F          rora                           ;
95B1 F6 AA       or   a,AAh                     ;
95B3 DD A6 00    and  a,[ix+00]                 ;
95B6 DD 77 00    ld   [ix+00],a                 ;
                @@keep2:                        ;/
95B9 DD 23       inc  ix
95BB 15          dec  d
95BC 20 CA       jr   nz,@@xlop
95BE ED 78       in   a,[bc]    ;a=[F9B0h]      ;-final dummy read ("hblank")
95C0 E3          ex   [sp],hl
95C1 11 00 08    ld   de,0800                   ;\
95C4 19          add  hl,de                     ;
95C5 CB 74       bit  6,h                       ; same as "next_scanline"
95C7 20 04       jr   nz,@@line_inrange         ;
95C9 11 50 C0    ld   de,C050                   ;
95CC 19          add  hl,de                     ;
                @@line_inrange:                 ;/
95CD E3          ex   [sp],hl
95CE DD E1       pop  ix
95D0 D1          pop  de
95D1 1D          dec  e
95D2 20 B1       jr   nz,@@ylop
95D4 C1          pop  bc
95D5 F1          pop  af
95D6 CD 0C B9    call B90C  ;kl_rom_restore
95D9 F3          di
95DA C9          ret
                ;------------------

95DB FD 77 02    ld   [iy+02],a  ;video mode
95DE A7          and  a,a
95DF 20 07       jr   nz,@@not_mode0
95E1 3E 70       ld   a,70h             ;\mode 0
95E3 01 60 2F    ld   bc,2F60h          ;/
95E6 18 0D       jr   @@this
                @@not_mode0:
95E8 3D          dec  a
95E9 3E 30       ld   a,30h             ;\mode 1
95EB 01 40 32    ld   bc,3240h          ;/
95EE 28 05       jr   z,@@this
95F0 3E 70       ld   a,70h             ;\mode 2
95F2 01 20 35    ld   bc,3520h          ;/
                @@this:
95F5 FD 77 06    ld   [iy+06],a     ;xlat'ed video mode
95F8 FD 71 1F    ld   [iy+1F],c  ;lsb
95FB FD 70 20    ld   [iy+20],b  ;msb
95FE C9          ret
                ;------------------
                set_picture_xpos_a:   ;in: A
95FF FD 77 03    ld   [iy+03],a ;picture xpos
9602 C6 4B       add  a,4Bh                                     ;\
9604 16 02       ld   d,02h                     ;\              ;
9606 01 B0 F8    ld   bc,F8B0                   ;               ;
9609 ED 51       out  [bc],d    ;[F8B0h]=02h    ;/              ;
960B 01 B1 F8    ld   bc,F8B1                                   ;
960E ED 79       out  [bc],a    ;[F8B1h]=picture xpos+4Bh       ;/
9610 C9          ret
                ;------------------
                next_scanline:
9611 11 00 08    ld   de,0800h
9614 19          add  hl,de
9615 CB 74       bit  6,h
9617 C0          ret  nz
9618 11 50 C0    ld   de,C050h
961B 19          add  hl,de
961C C9          ret
                ;------------------
961D             ...
                ;------------------
                init_vidi_crtc:  ;called initially after RUN"VIDI
997C 21 BA 9C    ld   hl,initial_crtc_values
997F 3E 10       ld   a,10h
                @@crtc_lop:
9981 3D          dec  a         ;index ;--> zf
9982 01 B0 F8    ld   bc,F8B0                   ;\
9985 ED 79       out  [bc],a    ;[F8B0h]=index  ;
9987 01 B1 F8    ld   bc,F8B1                   ;
998A 5E          ld   e,[hl]                    ;
998B ED 59       out  [bc],e    ;[F8B1h]=data   ;/
998D 23          inc  hl
998E 20 F1       jr   nz,@@crtc_lop    ;<-- zf
9990 C9          ret
                ;------------------
                set_brightness_contrast:
9991 01 B0 F9    ld   bc,0F9B0h
9994 3E 01       ld   a,01h                     ;\
9996 ED 79       out  [bc],a    ;[F9B0h]=01h    ; reset brightness/contrast
9998 3D          dec  a                         ;
9999 ED 79       out  [bc],a    ;[F9B0h]=00h    ;/
999B 11 02 00    ld   de,0002h                  ;\
999E FD 7E 01    ld   a,[iy+01h] ;contrast      ; contrast
99A1 CD A9 99    call @@set_this                ;/
99A4 1E 04       ld   e,04h                     ;\
99A6 FD 7E 00    ld   a,[iy+00h] ;brightness    ; brightness
                ;- - - - -                      ;/
                @@set_this:   ;in: A=data/range, E=type, D=00h
99A9 3C          inc  a
                @@set_lop:
99AA 3D          dec  a
99AB C8          ret  z
99AC ED 59       out  [bc],e    ;[F9B0h]=either 02h=contrast, or 04h=brightness
99AE ED 51       out  [bc],d    ;[F9B0h]=00h
99B0 18 F8       jr   @@set_lop
                ;------------------
                start_stop_scanning:
99B2 AF          xor  a,a
99B3 FD 77 0A    ld   [iy+0A],a  ;=0
99B6 CD F0 9B    call do_sync_stuff
99B9 3E 01       ld   a,01h
99BB FD 77 0A    ld   [iy+0A],a  ;=1
99BE C8          ret  z                 ;<---- zf
99BF CD 43 9C    call wait_for_pic_ypos

99C2 01 B0 F9    ld   bc,F9B0                   ;\
99C5 3E 00       ld   a,00h                     ; start scanning
99C7 ED 79       out  [bc],a  ;[F9B0h]=00h      ;
99C9 FD 7E 06    ld   a,[iy+06]         ;xlat'ed video mode
99CC FD 77 09    ld   [iy+09],a
99CF 5F          ld   e,a               ;xlat'ed video mode
99D0 F6 08       or   a,08h  ;nmi_enable ?
99D2 FD 77 08    ld   [iy+08],a                 ;
99D5 ED 59       out  [bc],e  ;[F9B0h]=[iy+09h] ;/

99D7 CD F0 9B    call do_sync_stuff             ;-wait for picture end
99DA CD F0 9B    call do_sync_stuff             ;\wait dunno why/whatfor (?)
99DD CD 43 9C    call wait_for_pic_ypos         ;/
99E0 01 B0 F9    ld   bc,F9B0                   ;\
99E3 3E 00       ld   a,00h                     ;
99E5 FD 77 09    ld   [iy+09],a                 ; stop scanning
99E8 ED 79       out  [bc],a    ;[F9B0h]=00h    ;
99EA F6 08       or   a,08h                     ;
99EC FD 77 08    ld   [iy+08],a                 ;/
99EF C9          ret
                ;------------------
                scan_192_line_frame:
99F0 11 50 00    ld   de,0050                   ;\
99F3 01 B0 F8    ld   bc,F8B0                   ;
99F6 ED 51       out  [bc],d    ;[F8B0h]=00h    ;
99F8 01 B1 F8    ld   bc,F8B1                   ;
99FB ED 59       out  [bc],e    ;[F8B1h]=50h    ;/
99FD 01 B0 F9    ld   bc,F9B0                   ;\
9A00 3E 10       ld   a,10h                     ;
9A02 ED 79       out  [bc],a    ;[F9B0h]=10h    ;/
9A04 FD 66 07    ld   h,[iy+07] ;vram addr msb
9A07 2E 00       ld   l,00
9A09 1E C0       ld   e,0C0h ;=192 decimal (not 200 decimal!)
                @@ylop:
9A0B D5          push de
9A0C E5          push hl
9A0D CD 3D 9A    call read_scanline
9A10 E1          pop  hl
9A11 CD 11 96    call next_scanline
9A14 D1          pop  de
9A15 1D          dec  e
9A16 20 F3       jr   nz,@@ylop
9A18 C9          ret
                ;------------------
                scan_last_8_lines:   ;read 8 scanlines (LAST 8 lines after above 192 lines)
9A19 FD E5       push iy
9A1B E1          pop  hl
9A1C 11 A8 00    ld   de,00A8h
9A1F 19          add  hl,de
9A20 01 B0 F9    ld   bc,0F9B0h
9A23 16 08       ld   d,08h
                @@ylop:
9A25 CD 3D 9A    call read_scanline
9A28 15          dec  d
9A29 20 FA       jr   nz,@@ylop
9A2B 3E 00       ld   a,00h                     ;\
9A2D ED 79       out  [bc],a    ;[F9B0h]=00h    ;/
9A2F 11 75 00    ld   de,0075h                  ;\
9A32 01 B0 F8    ld   bc,0F8B0                  ;
9A35 ED 51       out  [bc],d    ;[F8B0h]=00h    ;
9A37 01 B1 F8    ld   bc,0F8B1h                 ;
9A3A ED 59       out  [bc],e    ;[F8B1h]=75h    ;/
9A3C C9          ret
                ;------------------
                read_scanline:    ;in: BC=F9B0h, HL=dest
                .rept 50h                               ;\
9A3D ED A2        ini    ;[hl]=[F9B0h]                  ; read one scanline
9A3F 04           inc  b ;undo "dec b" (occured in ini) ; (50h bytes)
                .endm                                   ;/
9B2D ED 78       in   a,[bc]  ;dummy=[F9B0h]            ;-final dummy read
9B2F C9          ret                                    ; (one "hblank" cycle)
                ;------------------

9B30 FD E5       push iy
9B32 E1          pop  hl
9B33 11 A8 00    ld   de,00A8
9B36 19          add  hl,de
9B37 3E 07       ld   a,07
9B39 FD B6 07    or   a,[iy+07] ;vram addr msb
9B3C 57          ld   d,a
9B3D 1E 80       ld   e,80
9B3F 01 50 08    ld   bc,0850
                @@
9B42 C5          push bc
9B43 D5          push de
9B44 06 00       ld   b,00
9B46 ED B0       ldir
9B48 D1          pop  de
9B49 EB          ex   de,hl
9B4A 01 00 08    ld   bc,0800
9B4D 09          add  hl,bc
9B4E EB          ex   de,hl
9B4F C1          pop  bc
9B50 10 F0       djnz 9B42
9B52 C9          ret
                ;------------------

9B53 3E 07       ld   a,07
9B55 FD B6 07    or   a,[iy+07] ;vram addr msb
9B58 57          ld   d,a
9B59 1E 80       ld   e,80
9B5B AB          xor  a,e
9B5C 67          ld   h,a
9B5D 6B          ld   l,e
9B5E 01 50 08    ld   bc,0850
9B61 C5          push bc
9B62 E5          push hl
9B63 D5          push de
9B64 06 00       ld   b,00
9B66 ED B0       ldir
9B68 E1          pop  hl
9B69 01 00 08    ld   bc,0800
9B6C 09          add  hl,bc
9B6D EB          ex   de,hl
9B6E E1          pop  hl
9B6F 09          add  hl,bc
9B70 C1          pop  bc
9B71 10 EE       djnz 9B61
9B73 C9          ret
                ;------------------

9B74 DD E5       push ix
9B76 FD 7E 07    ld   a,[iy+07] ;vram addr msb
9B79 EE 80       xor  a,80
9B7B FD 77 07    ld   [iy+07],a ;vram addr msb
9B7E CD 08 BC    call BC08  ;scr_set_base
9B81 FD E5       push iy
9B83 DD E1       pop  ix
9B85 11 A8 00    ld   de,00A8
9B88 DD 19       add  ix,de
9B8A 3E 07       ld   a,07
9B8C FD 86 07    add  a,[iy+07] ;vram addr msb
9B8F 67          ld   h,a
9B90 2E 80       ld   l,80
9B92 AD          xor  a,l
9B93 57          ld   d,a
9B94 5D          ld   e,l
9B95 06 08       ld   b,08
9B97 C5          push bc
9B98 E5          push hl
9B99 D5          push de
9B9A 06 50       ld   b,50
9B9C C5          push bc
9B9D 7E          ld   a,[hl]
9B9E 47          ld   b,a
9B9F EB          ex   de,hl
9BA0 7E          ld   a,[hl]
9BA1 EB          ex   de,hl
9BA2 DD 4E 00    ld   c,[ix+00]
9BA5 DD 70 00    ld   [ix+00],b
9BA8 77          ld   [hl],a
9BA9 79          ld   a,c
9BAA 12          ld   [de],a
9BAB 23          inc  hl
9BAC 13          inc  de
9BAD DD 23       inc  ix
9BAF C1          pop  bc
9BB0 10 EA       djnz 9B9C
9BB2 E1          pop  hl
9BB3 01 00 08    ld   bc,0800
9BB6 09          add  hl,bc
9BB7 EB          ex   de,hl
9BB8 E1          pop  hl
9BB9 09          add  hl,bc
9BBA C1          pop  bc
9BBB 10 DA       djnz 9B97
9BBD DD E1       pop  ix
9BBF C9          ret
                ;------------------
                set_nmi_vector:
9BC0 FD E5       push iy                ;\
9BC2 E1          pop  hl                ;
9BC3 11 28 03    ld   de,0328           ;
9BC6 19          add  hl,de             ;
9BC7 EB          ex   de,hl             ; save old NMI vector
9BC8 21 66 00    ld   hl,0066           ;
9BCB 01 05 00    ld   bc,0005           ;
9BCE C5          push bc                ;
9BCF ED B0       ldir                   ;
9BD1 C1          pop  bc                ;/
9BD2 21 DB 9B    ld   hl,nmi_handler    ;\
9BD5 11 66 00    ld   de,0066h          ; set new Z80 NMI vector
9BD8 ED B0       ldir                   ;/
9BDA C9          ret
                ;---
                nmi_handler:  ;in: bc=F9B0, h=[iy+09h] (see "halt" opcode)
9BDB ED 61       out  [bc],h    ;[F9B0h]=[iy+09h]  ;ack and/or disable nmi
9BDD 7A          ld   a,d       ;apply a=time value (a=0 would mean no nmi, ie. timeout)
9BDE ED 45       retn
                ;------------------
                restore_nmi_vector:
9BE0 FD E5       push iy                ;\
9BE2 E1          pop  hl                ;
9BE3 11 28 03    ld   de,0328           ;
9BE6 19          add  hl,de             ; restore old NMI vector
9BE7 11 66 00    ld   de,0066           ;
9BEA 01 05 00    ld   bc,0005           ;
9BED ED B0       ldir                   ;/
9BEF C9          ret
                ;------------------
                do_sync_stuff:
9BF0 01 B0 F9    ld   bc,F9B0
9BF3 FD 7E 08    ld   a,[iy+08]
9BF6 6F          ld   l,a
9BF7 FD 7E 09    ld   a,[iy+09]
9BFA 67          ld   h,a
9BFB 11 E8 03    ld   de,03E8h   ;retry count                   ;\
9BFE D5          push de                                        ;
                @@redo_too_short:                               ;
9BFF D1          pop  de                                        ;
9C00 1B          dec  de         ;retry count                   ;
9C01 7A          ld   a,d                                       ;
9C02 B3          or   a,e                                       ;
9C03 C8          ret  z          ;retry giving up               ;
9C04 D5          push de                                ;\      ;
9C05 CD 23 9C    call @@do_dirty_sync   ;in: bc=F9B0    ;       ;
9C08 D1          pop  de             ;out: A=0=timeout  ;       ;
9C09 B7          or   a,a            ;     A>0=time     ;       ;
9C0A C8          ret  z     ;---> timeout (no sync)     ;/      ;
9C0B FE 10       cmp  a,10h   ;short = hsync ?                  ;
9C0D D5          push de                                        ;
9C0E 38 EF       jr   c,@@redo_too_short                        ;
9C10 D1          pop  de                                        ;/
9C11 CD 32 9C    call @@do_exact_sync   ;in: bc=F9B0            ;-
9C14 CB 0B       ror  e
9C16 D8          ret  c
9C17 FD 7E 0A    ld   a,[iy+0A]
9C1A B7          or   a,a
9C1B C0          ret  nz
9C1C 3C          inc  a
9C1D FD 77 0A    ld   [iy+0A],a
9C20 C3 FB 9B    jp   9BFB
                ;---
                @@do_dirty_sync:    ;in: bc=F9B0, out: A=0=timeout
9C23 16 01       ld   d,01
9C25 AF          xor  a,a
9C26 ED 69       out  [bc],l    ;[F9B0h]=[iy+08]
                @@dirty_lop:
9C28 14          inc  d
9C29 28 03       jr   z,@@dirty_timeout
                ;---> nmi_handler   ;in: bc=F9B0, h=[iy+09h]
                ;---> out: a=d (ie. a=01h=exit loop)
9C2B B7          or   a,a
9C2C 28 FA       jr   z,@@dirty_lop
                @@dirty_timeout:
9C2E ED 61       out  [bc],h    ;[F9B0h]=[iy+09h]
9C30 B7          or   a,a
9C31 C9          ret
                ;---
                @@do_exact_sync:   ;in: bc=F9B0
9C32 1E FF       ld   e,FF
                @@halt_lop:
9C34 AF          xor  a,a
9C35 ED 4F       ld   r,a
9C37 ED 69       out  [bc],l    ;[F9B0h]=[iy+08h]
9C39 76          halt                 ;maybe this waits for NMI ?
                ;---> nmi_handler   ;in: bc=F9B0, h=[iy+09h]
9C3A ED 5F       ld   a,r
9C3C 1C          inc  e
9C3D FE 20       cmp  a,20h  ;too short
9C3F 38 F3       jr   c,@@halt_lop
9C41 B7          or   a,a
9C42 C9          ret
                ;------------------
                wait_for_pic_ypos:
9C43 FD 4E 04    ld   c,[iy+04] ;picture ypos   ;\
9C46 0C          inc  c                         ; wait max 256 times (vhold)
9C47 CD 50 9C    call 9C50                      ;/
9C4A FD 7E 05    ld   a,[iy+05] ;picture yextra ;\eventually wait another
9C4D A7          and  a,a                       ; some times (=max 512 total)
9C4E C8          ret  z                         ; (this extra wait seems to
9C4F 4F          ld   c,a                       ; be unused; always zero)
                ;- - - -                        ;/
                @@
                @@wait_lop:
9C50 06 0E       ld   b,0Eh
9C52 10 FE       djnz $
9C54 00          nop
9C55 00          nop
9C56 0D          dec  c
9C57 20 F7       jr   nz,@@wait_lop
9C59 C9          ret
                ;------------------
                set_inks_and_border:
9C5A CD 77 9C    call @@get_inks_per_vmode
9C5D 48          ld   c,b
9C5E 06 00       ld   b,00h
                @@inks_lop:
9C60 C5          push bc
9C61 78          ld   a,b
9C62 46          ld   b,[hl]
9C63 48          ld   c,b
9C64 23          inc  hl
9C65 E5          push hl
9C66 CD 32 BC    call BC32  ;scr_set_ink
9C69 E1          pop  hl
9C6A C1          pop  bc
9C6B 78          ld   a,b
9C6C B9          cmp  a,c
9C6D 28 03       jr   z,@@inks_done
9C6F 04          inc  b
9C70 18 EE       jr   @@inks_lop
                @@inks_done:
9C72 46          ld   b,[hl]
9C73 48          ld   c,b
9C74 C3 38 BC    jp   BC38  ;scr_set_border
                ;---
                @@get_inks_per_vmode:
9C77 FD E5       push iy                        ;\
9C79 E1          pop  hl                        ; hl=iy+7Fh
9C7A 01 7F 00    ld   bc,007Fh                  ;
9C7D 09          add  hl,bc                     ;/
9C7E FD 7E 02    ld   a,[iy+02]  ;video mode    ;\
9C81 FE 01       cmp  a,01                      ; choose mode
9C83 28 08       jr   z,@@mode1                 ;
9C85 30 10       jr   nc,@@mode2                ;/
9C87 11 A1 9C    ld   de,inks_mode0             ;\mode 0
9C8A 06 0F       ld   b,0Fh                     ;/
9C8C C9          ret
                @@mode1:
9C8D 11 11 00    ld   de,0011h
9C90 19          add  hl,de
9C91 11 B2 9C    ld   de,inks_mode1
9C94 06 03       ld   b,03h
9C96 C9          ret
                @@mode2:
9C97 11 16 00    ld   de,0016h
9C9A 19          add  hl,de
9C9B 11 B7 9C    ld   de,inks_mode2
9C9E 06 01       ld   b,01h
9CA0 C9          ret
                ;---
                inks_mode0:  ;ink 0..15, border
                 ;the color ramp here
                 ;looks perfect on GT65 green monitor,
                 ;but looks like crap on CTM644 color screens
9CA1 00 02 04 .. db 00h,02h,04h,05h,06h,08h,0Ah,0Ch
9CA9 0E 0F 11 .. db 0Eh,0Fh,11h,12h,15h,17h,19h,1Ah, 00h
                ;---
                inks_mode1:  ;ink 0..3, border
9CB2 00 0A 1A .. db   00h,0Ah,1Ah,14h, 00h   ;<--these are NOT linear arranged!!
                ;---
                inks_mode2:  ;ink 0..1, border
9CB7 00 1A 00    db   00h,1Ah, 00h
                ;------------------
                initial_crtc_values:
                 ;N/A     ;crtc[11h] N/A        ;lightpen low
                 ;N/A     ;crtc[10h] N/A        ;lightpen high
9CBA 00          db 0     ;crtc[0Fh] 0          ;cursor low
9CBB 00          db 0     ;crtc[0Eh] 0          ;cursor high
9CBC 00          db 0     ;crtc[0Dh] 0          ;start addr low
9CBD 00          db 0     ;crtc[0Ch] 0          ;start addr high
9CBE 00          db 0     ;crtc[0Bh] 0          ;cursor end
9CBF 00          db 0     ;crtc[0Ah] 0          ;cursor start
9CC0 07          db 07h   ;crtc[09h] 07h        ;max scanline (-1)
9CC1 00          db 0     ;crtc[08h] 0          ;interlace mode
9CC2 00          db 0     ;crtc[07h] 0          ;vertical sync pos
9CC3 19          db 19h   ;crtc[06h] 19h        ;vertical displayed
9CC4 00          db 0     ;crtc[05h] 0          ;vertical total adjust
9CC5 26          db 26h   ;crtc[04h] 26h        ;vertical total (-1)
9CC6 11          db 11h   ;crtc[03h] 11h        ;horizontal sync width
9CC7 5B          db 5Bh   ;crtc[02h] 5Bh or ..  ;horizontal sync pos
9CC8 50          db 50h   ;crtc[01h] 50h        ;horizontal displayed
9CC9 75          db 75h   ;crtc[00h] 75h or 50h ;horizontal total (-1)
                ;------------------
9CCA ...        ...
